package com.sourcetrip.my.inter;

/**
 * @author: ZhouBert
 * @date: 2020/12/25
 * @description:
 */
public interface Heap<E> {

	/**
	 * 堆的容量（元素的数量）
	 * @return
	 */
	int size();

	/**
	 * 是否为空
	 * @return
	 */
	boolean isEmpty();

	/**
	 * 清空堆
	 */
	void clear();

	/**
	 * 往堆里添加元素
	 * @param element
	 */
	void add(E element);

	/**
	 * 获取堆顶元素
	 * @return
	 */
	E get();

	/**
	 * 删除堆顶元素
	 * 对于堆来说，每一次都是删除堆顶元素！
	 * @return
	 */
	E remove();

	/**
	 * 删除堆顶元素的同时插入一个新元素
	 * @param element
	 * @return
	 */
	E replace(E element);
}
